package org.maven.dependencybrowser.controller;
/**********************************************************************
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Contributors:

**********************************************************************/

public class Controller
{

    // TODO all resolution over multiple repositories (file/http/workspace)
    // TODO optional caching for remote repositories?
    // TODO allow user to load a file for a given dependency from the tree
    // TODO indicate different repositories in tree

    private BooleanController checkShowCompile = new BooleanController(true);
    private BooleanController checkShowTest = new BooleanController(false);
    private BooleanController checkShowRuntime = new BooleanController(true);
    private BooleanController checkShowProvided = new BooleanController(true);
    private BooleanController resolveExclusions = new BooleanController(true);

    boolean includeScope(String scope)
    {
        if ("compile".equalsIgnoreCase(scope) && !checkShowCompile.value)
        {
            return false;
        }
        if ("test".equalsIgnoreCase(scope) && !checkShowTest.value)
        {
            return false;
        }
        if ("runtime".equalsIgnoreCase(scope) && !checkShowRuntime.value)
        {
            return false;
        }
        if ("provided".equalsIgnoreCase(scope) && !checkShowProvided.value)
        {
            return false;
        }
        return true;
    }

    /**
     * a mutable boolean, used as a lightweight non-swing dependant model
     */
    public class BooleanController
    {

        private boolean value;

        private BooleanController(boolean value)
        {
            this.value = value;
        }

        public boolean getValue()
        {
            return value;
        }

        public void toggle()
        {
            value = !value;
        }

    }

    public BooleanController getCheckShowCompile()
    {
        return checkShowCompile;
    }

    public BooleanController getCheckShowProvided()
    {
        return checkShowProvided;
    }

    public BooleanController getCheckShowRuntime()
    {
        return checkShowRuntime;
    }

    public BooleanController getCheckShowTest()
    {
        return checkShowTest;
    }

    public BooleanController getResolveExclusions()
    {
        return resolveExclusions;
    }
}
